﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using OrmAuto;

public partial class Controls_DatiUtenteControl : System.Web.UI.UserControl
{
    QueryUtenti mQUtenti = new QueryUtenti();
    protected string mUserName = string.Empty;
    protected string mIDUtente = string.Empty;

    public string IDUtente { get; set; }

    public string srcImageInvia { get; set; }
    public string Css { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.Page.User.Identity.IsAuthenticated)
            Server.Transfer(FormsAuthentication.LoginUrl);

        if (!Page.IsPostBack)
            showDatiUtente();

    }//fM

    protected void showDatiUtente()
    {
        if (string.IsNullOrEmpty(IDUtente))
        {
            //myLiteralMsg.Text = "Errore : id Utente non impostato !";
            //return ;  
        }
        var utente = mQUtenti.getUtenteByUserName(this.Page.User.Identity.Name);
        if (utente == null) { myLiteralMsg.Text = "Utente non trovato !"; return; }

        mUserName = utente.UserName;
        mIDUtente = utente.UserId.ToString();


        myLblUserName.Text = mUserName;
        myLblUserID.Text = mIDUtente;
        myTxtEmail.Text = utente.Email;

        var listaProvincie = mQUtenti.getProvince(null);
        var listaRegioni = mQUtenti.getRegioni(null);
        var stati = mQUtenti.getStati();

        myDropStatoLegale.DataTextField = "STATO_stato";
        myDropStatoLegale.DataValueField = "STATO_id";
        myDropStatoLegale.DataSource = stati;
        myDropStatoLegale.DataBind();

        myDropRegioneLegale.DataTextField = "REG_regione";
        myDropRegioneLegale.DataValueField = "REG_id";
        myDropRegioneLegale.DataSource = listaRegioni;
        myDropRegioneLegale.DataBind();

        myDropProvLegale.DataTextField = "PROV_provincia";
        myDropProvLegale.DataValueField = "PROV_id";
        myDropProvLegale.DataSource = listaProvincie;
        myDropProvLegale.DataBind();

        // sedi operative
        myDropStatoOperat.DataTextField = "STATO_stato";
        myDropStatoOperat.DataValueField = "STATO_id";
        myDropStatoOperat.DataSource = stati;
        myDropStatoOperat.DataBind();

        myDropRegioneOperat.DataTextField = "REG_regione";
        myDropRegioneOperat.DataValueField = "REG_id";
        myDropRegioneOperat.DataSource = listaRegioni;
        myDropRegioneOperat.DataBind();

        myDropProvOperat.DataTextField = "PROV_provincia";
        myDropProvOperat.DataValueField = "PROV_id";
        myDropProvOperat.DataSource = listaProvincie;
        myDropProvOperat.DataBind();

        ////
        QuerierLight qLight = new QuerierLight();
        myDropTipoDitta.DataTextField = "Tipo";
        myDropTipoDitta.DataValueField = "ID";
        myDropTipoDitta.DataSource = qLight.getTipoDitte();
        myDropTipoDitta.DataBind();

        myDropAttività.DataTextField = "Venditore";
        myDropAttività.DataValueField = "ID";
        myDropAttività.DataSource = qLight.getTipiVenditori();
        myDropAttività.DataBind();

        //dati utente 
        var utC = mQUtenti.getDatiUtente(utente.UserId);
        if (utC == null) return;

        myTxtRagSoc.Text = utC.RagSoc;
        myTxtPiva.Text = utC.Piva;
        myTxtReferente.Text = utC.Referente;
        myTxtEmailInfo.Text = utC.EmailInfo;

        if (!utC.TipiVenditoriReference.IsLoaded)
            utC.TipiVenditoriReference.Load();
        if (utC.TipiVenditoriReference.Value != null)
            myDropAttività.SelectedValue = utC.TipiVenditoriReference.Value.ID.ToString();

        if (!utC.TipoDitteReference.IsLoaded)
            utC.TipoDitteReference.Load();
        if (utC.TipoDitteReference.Value != null)
            myDropTipoDitta.SelectedValue = utC.TipoDitteReference.Value.ID.ToString();

        //indirizzo legale			
        myDropStatoLegale.Items.FindByValue(utC.STATI.STATO_ID.ToString() ).Selected = true ;  
        myTxtIndLegale.Text = utC.IndirizzoLegale;
        myTxtPaeseCittàLegale.Text = utC.CittàLegale;

        myTxtCAPSl.Text = utC.CodPostLegale;

        //indirizzo operativo
        this.myDropStatoOperat.Items.FindByValue(utC.STATI1.STATO_ID.ToString()).Selected = true;  

        myTxtIndOperat.Text = utC.IndirizzoOperativo;
        myTxtPaeseCittàOperat.Text = utC.CittàOp;
        myTxtCapSo.Text = utC.CodPostOp;

        //altri dati
        myTxtCell1.Text = utC.Cell1;
        myTxtCell2.Text = utC.Cell2;
        myTxtTelSedeLegale.Text = utC.NumTelLegale;
        myTxtTelSedeOperat.Text = utC.NumTelOperativo;
        myTxtNumVerde.Text = utC.NumVerde;
        myTxtNumDigitale.Text = utC.NumTelDigitale;
        myTxtFaxSedeLegale.Text = utC.FaxLegale;
        myTxtFaxSedeOperat.Text = utC.FaxOperativo;
        myTxtAccountSkype.Text = utC.AccountSkype;

        myTxtSito.Text = utC.SitoInternet;
        myTxtdescBreve.Text  = utC.DescBreve;


    }//fM


    //memo 
    protected void ImageButInvia_Click(object sender, ImageClickEventArgs e)
    {
        salvaDati();
    }//fM

    private void salvaDati()
    {
        Security sec = new Security();
        LayerBaseEF DAL = new LayerBaseEF();
        var dal = DAL.getDAL();

        var datiUt = dal.DatiUtenti.Where(du => du.Users.UserName == this.Page.User.Identity.Name).FirstOrDefault();
        if (datiUt == null)
        { myLiteralMsg.Text = "Dati utente non trovati"; return; }

        string strError = string.Empty;

        //tipo ditta
        var idTD = int.Parse(myDropTipoDitta.SelectedValue);
        datiUt.TipoDitte = dal.TipoDitte.Where(td => td.ID == idTD).FirstOrDefault();
        //attività
        var idAtt = int.Parse(myDropAttività.SelectedValue);
        datiUt.TipiVenditori = dal.TipiVenditori.Where(tv => tv.ID == idAtt).FirstOrDefault();
        //rag. soc.
        datiUt.RagSoc = myTxtRagSoc.Text.Trim();
        if (sec.CiSonoCarNonAmmessi(datiUt.RagSoc, out strError))
        { myLiteralMsg.Text = "Carattere non ammesso nella Rag.Soc. : " + strError; return; }
        //Piva  
        datiUt.Piva = myTxtPiva.Text.Trim();
        if (sec.CiSonoCarNonAmmessi(datiUt.Piva, out strError))
        { myLiteralMsg.Text = "Carattere non ammesso nella Piva. : " + strError; return; }
        //referente
        datiUt.Referente = myTxtReferente.Text;
        datiUt.EmailInfo = myTxtEmailInfo.Text;
        //Indirizzo legale

        if (sec.CiSonoCarNonAmmessiOVuoto(datiUt.IndirizzoLegale, "Indirizzzo s.l.", ref myLiteralMsg))
            return;
        datiUt.IndirizzoLegale = myTxtIndLegale.Text;

        var statoIDleg = int.Parse(this.myDropStatoLegale.SelectedValue);

        datiUt.STATI = dal.STATI.Where(s => s.STATO_ID == statoIDleg).FirstOrDefault(); //legale 
        if (!string.IsNullOrEmpty(myDropRegioneLegale.SelectedValue))
            datiUt.FKRegioneLegale = int.Parse(myDropRegioneLegale.SelectedValue);

        if (!string.IsNullOrEmpty(myDropProvLegale.SelectedValue))
            datiUt.FKProvinciaLegale = int.Parse(myDropProvLegale.SelectedValue);

        if (sec.CiSonoCarNonAmmessiOVuoto(myTxtPaeseCittàLegale.Text, "Città sl.", ref myLiteralMsg))
            return;
        datiUt.CittàLegale = myTxtPaeseCittàLegale.Text;

        datiUt.CodPostLegale = myTxtCAPSl.Text;

        //indirizzi operativi
        //Indirizzo operativo			
        if (sec.CiSonoCarNonAmmessi(myTxtIndOperat.Text, "Indirizzo so.", ref myLiteralMsg))
            return;
        datiUt.IndirizzoOperativo = myTxtIndOperat.Text;

        var statoIDop = int.Parse(myDropStatoOperat.SelectedValue);
        datiUt.STATI1 = dal.STATI.Where(s => s.STATO_ID == statoIDop).FirstOrDefault(); //op  

        if (!string.IsNullOrEmpty(myDropRegioneOperat.SelectedValue))
            datiUt.FKRegioneOp = int.Parse(myDropRegioneOperat.SelectedValue);

        if (!string.IsNullOrEmpty(myDropProvOperat.SelectedValue))
            datiUt.FKProvinciaOp = int.Parse(myDropProvOperat.SelectedValue);

        if (sec.CiSonoCarNonAmmessi(this.myTxtPaeseCittàOperat.Text, "Città so.", ref myLiteralMsg))
            return;
        datiUt.CittàOp = myTxtPaeseCittàOperat.Text;

        datiUt.CodPostOp = myTxtCapSo.Text;  

        //altri dati
        datiUt.Cell1 = myTxtCell1.Text;
        datiUt.Cell2 = myTxtCell2.Text;
        datiUt.NumTelLegale = myTxtTelSedeLegale.Text;
        datiUt.NumTelOperativo = myTxtTelSedeOperat.Text;
        datiUt.NumVerde = myTxtNumVerde.Text;
        datiUt.NumTelDigitale = myTxtNumDigitale.Text;
        datiUt.FaxLegale = myTxtFaxSedeLegale.Text;
        datiUt.FaxOperativo = myTxtFaxSedeOperat.Text;
        datiUt.SitoInternet = myTxtSito.Text;
        datiUt.AccountSkype = myTxtAccountSkype.Text;

        if (sec.CiSonoCarNonAmmessi(myTxtdescBreve.Text ,"Desc. breve",ref myLiteralMsg ))
            return ;
        datiUt.DescBreve = myTxtdescBreve.Text  ; 

        if (sec.CiSonoCarNonAmmessi(myTxtdescBreve.Text, "Desc. breve", ref myLiteralMsg))
            return;
        datiUt.DescBreve = myTxtdescBreve.Text;

        try
        {
            dal.SaveChanges();
            myLiteralMsg.Text = "Dati salvati ( " + DateTime.Now.ToLongTimeString();
        }
        catch (Exception ex)
        {
            myLiteralMsg.Text = "Errore : " + ex.Message;
        }

    }//fM



}//fC
